prompt: latex-raw-string-docstrings — unblock, implement across 6 repos, record - #255
Merged
Merged
Conversation
…ep gate
Resumed /start_dev on draft/maintenance/workspaces/latex_raw_string_docstrings.md.
The task remains BLOCKED and no issue was filed.
Blocker re-verified against PyAutoHands main @ cdea28c, on a probe pair
differing only by an `r` on the first narrative docstring:
_narrative_docstring_ranges [(0,2),(6,10)] -> [(6,10)] (raw block dropped)
read_env_declaration ['jax'] -> None
Both silent, neither raises. add_notebook_quotes.py:67 still tests
startswith('"""') and env_config.py:110 still uses ^(?:"""|''')\s*$. No
feature/hands-raw-string-docstring-prefix branch exists on the remote, and its
own blocker feature/hands-hygiene-leftovers is still open.
Two prompt defects found and fixed while re-reading the plan:
- The warning sweep is interpreter-dependent. Invalid escapes are a
SyntaxWarning only on Python 3.12+; on 3.11 they are a DeprecationWarning.
Verified on 3.11.15: a docstring containing $\odot$ yields 0 SyntaxWarning
and 1 DeprecationWarning. The prompt's verification gate ("both sweeps
return zero") would therefore pass VACUOUSLY on a 3.11 interpreter. Gate and
sweep spec now require 3.12+ or both warning categories.
- draft/maintenance/autolens_workspace/latex_docstrings_invalid_escape_warnings.md
is the same task measured on autolens_workspace alone (2026-08-09) — its 80
warnings across 17 files are exactly the 17 files in the newer survey,
top-six counts matching. Marked SUPERSEDED, with its unique content (the
interpreter trap, the "do not reword the prose" constraint) carried across.
One prompt, one task.
Registry entries for both blocked tasks carry the recheck date and evidence.
…worktree-only /start_dev on draft/bug/hands/raw_string_docstring_prefix.md, the prerequisite for latex-raw-string-docstrings. The prompt recorded it as blocked by hands-hygiene-leftovers. That blocker is LOCAL WORKTREE CONTENTION, not a code dependency: feature/hands-hygiene-leftovers touches AGENTS.md, generate_release_notes.py, bin/autohands and two unrelated tests — zero overlap with add_notebook_quotes.py or env_config.py. Done in a separate clone, so the two merge in either order and nothing had to wait. Fix and its six regression tests are implemented, verified and pushed on PyAutoHands claude/latex-raw-string-docstrings-9h4ine. Each new test confirmed to fail with the source change reverted. Full suite 14F/337P on the branch vs 14F/331P on main — identical failure sets, all 14 from ipynb-py-convert being unbuildable in this container (CI installs it). Prompt advanced draft/ -> active/; registered in active.md; removed from planned.md. The latex-raw-string-docstrings entry now points at #250 as an in-flight blocker rather than an unfiled prompt.
…blocked PyAutoHands PR #251 merged (c887290), all 3 CI matrix jobs green (pytest 3.12/3.13/3.14). Both docstring parsers now accept an optional r/R prefix. Prompt advanced active/ -> complete/2026/08/; removed from active.md; index regenerated. The latex-raw-string-docstrings entry in planned.md is now marked UNBLOCKED and the prompt's own BLOCKED BY section is struck through. Traps recorded for whoever picks up the workspace task: - the recorded blocker (hands-hygiene-leftovers) was worktree contention, not a code dependency — zero file overlap, verified - the parity case is the test that matters: read_env_declaration breaks when the raw docstring is NOT the one carrying the declaration - do NOT run black on PyAutoHands; it is not black-formatted (44 files on main) - ipynb-py-convert will not build in a container; assert on converted source
…kspace repos
41 files, 180 literals, 131 silent corruptions repaired — 41 files matches the
2026-08-20 survey exactly. Pushed on claude/latex-raw-string-docstrings-9h4ine
in HowToFit, HowToGalaxy, HowToLens, autofit_workspace, autogalaxy_workspace
and autolens_workspace. PRs not yet opened.
Verification per repo, in order: baseline regeneration is a NO-OP (so generator
noise cannot fake the gate); both sweeps zero; runtime value check = 131
repaired / 0 unexpected; diff-empty gate passes byte-exactly. autolens_workspace
additionally re-reads all 57 __Env__ declarations identically, and 4 of the
raw-stringed files carry __Env__, exercising PyAutoHands#251 end to end.
Two findings the survey did not have:
- The runtime VALUE check is the gate that actually catches mistakes. The
diff-empty gate cannot see them: the generator reads source text, not runtime
values, so a corrupted value regenerates identically. The value check caught
two real errors mid-task — a `print("\nInfo:")` newline about to be destroyed,
and 12 already-escaped `$\\chi^2$` about to be doubled into LaTeX line breaks.
- The gate needs one refinement. HowToFit's 4 `plt.ylabel` labels are runtime
strings in CODE cells, which copy source verbatim, so the `r` legitimately
appears in the notebook. The gate holds exactly as written for every
docstring; that one code-cell delta is by design, not a Hands regression.
Residue recorded: autolens_workspace scripts/group/likelihood_function.py uses
the double-backslash convention in three docstrings mixed with single-backslash
macros. Adding `r` would double the already-correct escapes; fixing it means
un-doubling 18 backslashes, a prose edit this task excludes.
… red Merged: HowToFit#47, HowToGalaxy#70, autofit_workspace#145, autogalaxy_workspace#218, autolens_workspace#492 — all green, including the CI 'Catalogue staleness' check, which independently re-confirms the regeneration gate this task was verified against locally. HowToLens#73 is held RED rather than merged. Two chapter_3 pixelization scripts fail numba type inference; neither is in the diff, all 8 files that ARE in it pass, and the failure reproduces identically on one re-run. Prime suspect is PyAutoArray#453 on timing and code area, but two specific mechanisms were tested under the exact CI versions and both passed, so no mechanism is proven. A control re-run of the last GREEN main build is in flight to settle it.
…stry moves The refresh check caught it: active.md and planned.md changed without the generated dashboard being regenerated, which AGENTS.md requires after any registry or draft/ change.
Jammy2211
pushed a commit
that referenced
this pull request
Aug 23, 2026
Merged PyAutoHands#254 (ce51277) + the follow-on import fix #255 (5ca3e70). Records the dual-invocation-context defect the merge exposed and the silent `except Exception` degradation around it. The stale-remote-branch sweep stays out of scope for /repo_cleanup. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F11sMzmaVWfU6NCz1PKVVb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Mind-side record for the raw-stringing task: the blocker chain, the two prompts that were really one, the implementation across six repos, and the outcome.
What moved
draft/bug/hands/raw_string_docstring_prefix.md→active/→ shipped as PyAutoHands#250 / feat: dashboard 'Epics' section under In flight with one-tap resume prompts #251 (merged).draft/maintenance/workspaces/latex_raw_string_docstrings.md→active/, issued as autolens_workspace#491, implemented across all six workspace repos.planned.md;active.mdcarries the live state.lifecycle.py checkandorphansclean throughout.The blocker chain was shorter than recorded
hands-raw-string-docstring-prefixwas marked blocked byhands-hygiene-leftovers. Reading that blocker rather than honouring it: it was local worktree contention, not a code dependency.feature/hands-hygiene-leftoverstouchesAGENTS.md,generate_release_notes.py,bin/autohandsand two unrelated tests — zero overlap withadd_notebook_quotes.py/env_config.py. Done in a separate clone, the two merge in either order and nothing had to wait.Two prompts, one task
draft/maintenance/autolens_workspace/latex_docstrings_invalid_escape_warnings.md(2026-08-09) is the same defect measured onautolens_workspacealone — its 80 warnings across 17 files are exactly the 17 files in the newer six-repo survey, top-six counts matching line for line. Marked SUPERSEDED with a pointer, its unique content carried across, kept for its #457 / PR #459 origin trail. One prompt, one task.A defect in the plan's own gate
The prompt's verification gate said "both sweeps return zero", with the sweep collecting
SyntaxWarning. Invalid escapes are aSyntaxWarningonly on Python 3.12+; on 3.11 they are aDeprecationWarning. Verified on 3.11.15: a docstring containing$\odot$yields 0SyntaxWarningand 1DeprecationWarning— so the gate would have passed vacuously on a 3.11 interpreter and looked exactly like "already fixed". The sweep spec and the gate now require 3.12+ or both categories.Result — 41 files, 180 literals, 131 corruptions repaired
41 files matches the survey exactly.
The verification that mattered
Recorded in
active.mdbecause it generalises: the prompt's diff-empty gate structurally cannot catch a wrong edit here — the generator reads source text, not runtime values, so a corrupted value regenerates identically. The check that does catch it is comparing every changed literal's runtime value HEAD vs worktree, asserting therprefix only ever removes corruption.It caught two real errors mid-task: a
print("\nInfo:")newline about to be destroyed, and 12 already-escaped$\\chi^2$about to be doubled into LaTeX line breaks. Final tally across all six repos: 131 repaired, 0 unexpected.Also recorded: the gate needs one refinement — runtime label strings live in code cells, which copy source verbatim, so an
rlegitimately shows there. The gate holds exactly as written for every docstring.Open item
HowToLens#73 is held red rather than merged. Two chapter_3 pixelization scripts fail numba type inference; neither is in the diff, all 8 files that are in it pass, and the failure reproduces identically on one re-run.
active.mdrecords the suspicion (PyAutoArray#453, on timing and code area) and explicitly that no mechanism is proven — two candidate mechanisms were tested under the exact CI versions and both passed.🤖 Generated with Claude Code
https://claude.ai/code/session_01MTjtx5mdituitiyQYFGn2E
Generated by Claude Code